package com.poly;

public class Master {
    private String name;

    public Master(String name) {
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    // 主人给小狗喂骨头
//    public void feed(Dog dog, Bone bone) {
//        System.out.println("主人：" + this.name + "给" + dog.getName() + "喂" + bone.getName());
//    }

    // 主人给小猫喂鱼（方法重载）
//    public void feed(Cat cat, Fish fish) {
//        System.out.println("主人：" + this.name + "给" + cat.getName() + "喂" + fish.getName());
//    }

    /*
        当有许多动物要喂食时，feed方法就要写很多遍，复用性不高。
    */

    // 因此，使用多态来实现代码复用
    // 比如，animal是编译类型，可指向（接受）Animal的子类的对象，即不同的运行类型
    public void feed(Animal animal, Food food){
        System.out.println("主人：" + this.name + "给" + animal.getName() + "喂" + food.getName());
    }
}
